---
title: 创建型模式概述
description: 创建型设计模式的概念、分类和应用场景总览
sidebar_position: 1
---

# 创建型模式概述

## 什么是创建型模式？

创建型模式（Creational Patterns）关注对象的创建过程，它们提供了一种在创建对象的同时隐藏创建逻辑的方式。这种模式在创建对象时能够提供更大的灵活性和可复用性。

## 为什么需要创建型模式？

在软件开发中，对象的创建可能会导致以下问题：
1. 代码重复
2. 耦合度高
3. 复杂度增加
4. 可维护性差

创建型模式通过以下方式解决这些问题：
1. 封装对象的创建过程
2. 隐藏具体类的实例化细节
3. 提供更灵活的对象创建方式
4. 降低系统的耦合度

## 创建型模式的分类

### 1. 单例模式（Singleton Pattern）

**核心思想**：确保一个类只有一个实例，并提供一个全局访问点。

**主要应用场景**：
- 处理资源访问冲突
- 全局计数器
- 系统配置类
- 线程池管理

**实现方式**：
- 饿汉式
- 懒汉式
- 双重检测
- 静态内部类
- 枚举实现

### 2. 工厂模式（Factory Pattern）

**核心思想**：定义一个创建对象的接口，让子类决定实例化哪个类。

**主要应用场景**：
- 对象的创建逻辑比较复杂
- 不同环境创建不同对象
- 处理大量具有相同属性的小对象

**实现方式**：
- 简单工厂
- 工厂方法
- 抽象工厂

### 3. 建造者模式（Builder Pattern）

**核心思想**：将一个复杂对象的构建过程与它的表示分离。

**主要应用场景**：
- 对象构造过程复杂
- 需要生成不同形式的对象
- 对象的构建需要遵循特定的步骤

**实现特点**：
- 支持链式调用
- 可以设置默认值
- 构建过程更加清晰
- 支持参数校验

### 4. 原型模式（Prototype Pattern）

**核心思想**：通过复制现有对象来创建新对象。

**主要应用场景**：
- 对象创建成本高
- 需要复制复杂对象
- 频繁创建相似对象

**实现方式**：
- 浅拷贝
- 深拷贝
- 序列化拷贝

## 如何选择合适的创建型模式？

1. **使用单例模式**，当：
   - 需要确保全局只有一个实例
   - 需要避免资源访问冲突
   - 需要节省系统资源

2. **使用工厂模式**，当：
   - 不知道具体要创建哪种对象
   - 需要解耦对象的创建和使用
   - 需要批量创建相似对象

3. **使用建造者模式**，当：
   - 对象构造过程复杂
   - 需要细粒度控制对象创建
   - 构造参数较多且有依赖关系

4. **使用原型模式**，当：
   - 对象创建成本高
   - 需要避免重复初始化
   - 对象之间差异较小

## 创建型模式的最佳实践

### 1. 通用原则
- 遵循单一职责原则
- 保持代码的可扩展性
- 注意线程安全问题
- 考虑性能影响

### 2. 注意事项
- 不要过度使用设计模式
- 根据实际需求选择合适的模式
- 注意模式之间的组合使用
- 保持代码的简洁性

### 3. 常见问题
- 创建对象的性能问题
- 线程安全问题
- 对象创建的时机
- 内存资源的管理

## 总结
创建型模式主要解决对象的创建问题，封装复杂的创建过程，解耦对象的创建代码和使用代码。

* 单例模式用来创建全局唯一对象。
* 工厂模式用来创建不同但是相关类型的对象（继承同一父类或者接口的一组子类），由外部给定的参数决定创建那种类型的对象。
* 建造者模式是用来创建复杂对象，可以通过设置不同的可选参数，定制化地创建不同的对象。
* 原型模式针对创建成本比较大的对象，利用已有对象进行复制的方式进行创建，以达到节省创建时间的目的。
